#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
快速打包脚本 - 拾取窗中流光 v2.0
使用PyInstaller打包，支持Python 3.12+
作者：adnaan
"""

import os
import sys
import subprocess
from pathlib import Path

def main():
    """主函数"""
    print("=" * 50)
    print("✨ 拾取窗中流光 v2.0 - 快速打包工具")
    print("=" * 50)
    
    # 切换到项目根目录
    project_root = Path(__file__).parent
    os.chdir(project_root)
    
    # 检查PyInstaller是否已安装
    try:
        import PyInstaller
        print("✅ PyInstaller已安装")
    except ImportError:
        print("❌ PyInstaller未安装，正在安装...")
        try:
            subprocess.run([sys.executable, "-m", "pip", "install", "pyinstaller"], check=True)
            print("✅ PyInstaller安装成功")
        except subprocess.CalledProcessError:
            print("❌ PyInstaller安装失败")
            return False
    
    # 清理之前的构建
    build_dir = project_root / "build"
    dist_dir = project_root / "dist"
    
    if build_dir.exists():
        import shutil
        shutil.rmtree(build_dir)
        print("🗑️ 已清理build目录")
    
    if dist_dir.exists():
        import shutil
        shutil.rmtree(dist_dir)
        print("🗑️ 已清理dist目录")
    
    # PyInstaller命令
    cmd = [
        "pyinstaller",
        "--onefile",  # 打包成单个exe文件
        "--windowed",  # 无控制台窗口
        "--name=拾取窗中流光",  # 可执行文件名称
        "--icon=src/icon.ico",  # 图标文件
        "--add-data=config.ini;.",  # 包含配置文件
        "--hidden-import=ttkbootstrap",  # 隐藏导入
        "--hidden-import=pystray",  # 隐藏导入
        "--hidden-import=PIL",  # 隐藏导入
        "--hidden-import=psutil",  # 隐藏导入
        "--hidden-import=socketio",  # 隐藏导入
        "--hidden-import=requests",  # 隐藏导入
        "--hidden-import=win32gui",  # 隐藏导入
        "--hidden-import=win32process",  # 隐藏导入
        "--hidden-import=win32api",  # 隐藏导入
        "--hidden-import=win32con",  # 隐藏导入
        "--hidden-import=app_parser",  # 隐藏导入
        "src/main.py"  # 主程序文件
    ]
    
    try:
        print("⚙️ 正在使用PyInstaller打包，这可能需要几分钟...")
        result = subprocess.run(cmd, check=True, capture_output=True, text=True)
        
        if result.returncode == 0:
            print("✅ 打包成功！")
            print(f"📁 可执行文件位置: {dist_dir / '拾取窗中流光.exe'}")
            print("🎉 打包完成！")
            return True
        else:
            print("❌ 打包失败")
            print("错误输出:", result.stderr)
            return False
            
    except subprocess.CalledProcessError as e:
        print(f"❌ 打包失败，返回码: {e.returncode}")
        print("错误输出:", e.stderr)
        return False
    except FileNotFoundError:
        print("❌ 未找到PyInstaller，请先安装:")
        print("pip install pyinstaller")
        return False

if __name__ == "__main__":
    main()
